name: Python Test Coverage

on:
  pull_request_target:
    branches: ["main", "feature*"]
    paths:
      - "python/**"

jobs:
  python-tests-coverage:
    name: Create Test Coverage Messages
    runs-on: ${{ matrix.os }}
    continue-on-error: true
    permissions:
      pull-requests: write
      contents: read
      actions: read
    strategy:
      matrix:
        python-version: ["3.10"]
        os: [ubuntu-latest]
    steps:
      - name: Wait for unit tests to succeed
        uses: lewagon/wait-on-check-action@v1.3.4
        with:
          ref: ${{ github.event.pull_request.head.sha }}
          check-name: 'Python Unit Tests (${{ matrix.python-version}}, ${{ matrix.os }})'
          repo-token: ${{ secrets.GH_ACTIONS_PR_WRITE }}
          wait-interval: 10
      - uses: actions/checkout@v4
      - name: Download coverage
        uses: dawidd6/action-download-artifact@v3
        with:
          name: python-coverage-${{ matrix.os }}-${{ matrix.python-version }}.txt
          github_token: ${{ secrets.GH_ACTIONS_PR_WRITE }}
          workflow: python-unit-tests.yml
          search_artifacts: true
          if_no_artifact_found: warn
      - name: Download pytest
        uses: dawidd6/action-download-artifact@v3
        with:
          name: pytest-${{ matrix.os }}-${{ matrix.python-version }}.xml
          github_token: ${{ secrets.GH_ACTIONS_PR_WRITE }}
          workflow: python-unit-tests.yml
          search_artifacts: true
          if_no_artifact_found: warn
      - name: Pytest coverage comment
        id: coverageComment
        uses: MishaKav/pytest-coverage-comment@main
        with:
          github-token: ${{ secrets.GH_ACTIONS_PR_WRITE }}
          pytest-coverage-path: python-coverage-${{ matrix.os }}-${{ matrix.python-version }}.txt
          coverage-path-prefix: "python/"
          title: "Python ${{ matrix.python-version }} Test Coverage Report"
          badge-title: "Py${{ matrix.python-version }} Test Coverage"
          report-only-changed-files: true
          junitxml-title: "Python ${{ matrix.python-version }} Unit Test Overview"
          junitxml-path: pytest-${{ matrix.os }}-${{ matrix.python-version }}.xml
          default-branch: "main"
          unique-id-for-comment: python-${{ matrix.python-version }}
